一、概述
日期工具類別提供了一系列與日期時間相關的實用功能,讓您能夠輕鬆地進行日期的格式化、運算、比較和解析。
使用範例:
// 建立日期工具的實例
const 工具 = new 日期工具();
// 使用格式化方法
const 格式化日期 = 工具.格式化(new Date(), 'YYYY-MM-DD');
console.log(格式化日期); // 輸出形如 "2023-11-15" 的日期字串
二、屬性
Units
一個物件,定義了可用於日期運算的時間單位。
Year: ‘year’Month: ‘month’Day: ‘day’Hour: ‘hour’Minute: ‘minute’Second: ‘second’Millisecond: ‘millisecond’
UnitNames
一個陣列,包含了所有 Units 物件中定義的時間單位名稱。
[‘year’, ‘month’, ‘day’, ‘hour’, ‘minute’, ‘second’, ‘millisecond’]
三、方法
加上(date, unit, count)
為指定的日期新增指定數量的時間單位,並返回更新後的新日期。
參數:
date(Date): 要處理的日期物件。unit(string): 要新增的時間單位類型。支援的值包括:‘year’, ‘month’, ‘day’。count(number): 要新增的時間單位數量(可為正或負數)。
返回:
Date- 新增時間單位後的Date物件。拋出錯誤:
Error: 當傳入無效的unit時(非 ‘year’, ‘month’, ‘day’)。
範例:
const 工具 = new 日期工具(); const date = new Date('2023-11-01'); // 新增 5 天 const newDate1 = 工具.加上(date, 'day', 5); console.log(newDate1); // 2023-11-06 // 新增 2 個月 const newDate2 = 工具.加上(date, 'month', 2); console.log(newDate2); // 2024-01-01 // 減少 1 年 const newDate3 = 工具.加上(date, 'year', -1); console.log(newDate3); // 2022-11-01
減去(日期, 單位, 數量)
從指定的日期中減去指定的單位數量,並返回新的日期物件。
參數:
日期(Date): 要操作的原始Date物件。單位(string): 要減去的日期和時間單位 (參考Units屬性)。數量(number): 要減去的單位數量。
返回:
Date- 減去指定單位數量後的新Date物件。拋出錯誤:
Error: 如果傳入的單位無效,或日期不是有效的Date物件。
範例:
const 工具 = new 日期工具(); const date = new Date('2023-11-15T14:30:00Z'); // 減去 3 個月 const newDate1 = 工具.減去(date, 'month', 3); console.log(newDate1); // 2023-08-15T14:30:00Z // 減去 10 天 const newDate2 = 工具.減去(date, 'day', 10); console.log(newDate2); // 2023-11-05T14:30:00Z
格式化日期(date, format)
根據指定的格式字串,將日期物件轉換為格式化的日期字串。
參數:
date(Date): 要格式化的日期物件。format(string): 指定的格式字串。
返回:
string- 格式化後的日期字串。拋出錯誤:
Error: 當date或format參數無效時。
支援的格式符號:
YYYY: 四位數年份YY: 兩位數年份MM: 兩位數月份 (補0)M: 月份DD: 兩位數日期 (補0)D: 日期HH: 24小時制小時 (補0)H: 24小時制小時mm: 分鐘 (補0)m: 分鐘ss: 秒數 (補0)s: 秒數xxx: 毫秒 (補0)DOW: 完整中文星期 (例如:星期一)dow: 簡短中文星期 (例如:一)
範例:
const 工具 = new 日期工具(); const date = new Date('2023-11-01T14:30:59.123'); console.log(工具.格式化日期(date, 'YYYY-MM-DD HH:mm:ss')); // '2023-11-01 14:30:59' console.log(工具.格式化日期(date, 'YY/M/D')); // '23/11/1' console.log(工具.格式化日期(date, 'DOW')); // '星期三' console.log(工具.格式化日期(date, 'HH:mm:ss.xxx')); // '14:30:59.123'
解析(dateString, format)
根據指定的格式,將日期字串解析為 Date 物件。
參數:
dateString(string): 要解析的日期字串。format(string): 日期的格式字串。
返回:
Date- 解析後生成的Date物件。拋出錯誤:
Error: 如果dateString與format不匹配或參數無效。
支援的格式符號:
YYYY: 四位數年份MM: 兩位數月份 (01-12)DD: 兩位數日期 (01-31)hh: 兩位數小時 (00-23)mm: 兩位數分鐘 (00-59)ss: 兩位數秒數 (00-59)zzz: 三位數毫秒 (000-999)
範例:
const 工具 = new 日期工具(); const dateString = '2023-11-15 14:30:59'; const format = 'YYYY-MM-DD hh:mm:ss'; const date = 工具.解析(dateString, format); console.log(date); // Date 物件: 2023-11-15T14:30:59.000Z const dateString2 = '2023-11'; const format2 = 'YYYY-MM'; const date2 = 工具.解析(dateString2, format2); console.log(date2); // Date 物件: 2023-11-01T00:00:00.000Z (日期預設為1)
在範圍內(日期, 開始, 結束)
檢查指定的日期是否在給定的日期範圍內(包含開始和結束日期)。
參數:
日期(Date): 要檢查的日期。開始(Date): 範圍的開始日期。結束(Date): 範圍的結束日期。
返回:
boolean- 如果日期在範圍內,返回true,否則返回false。拋出錯誤:
Error: 如果任一參數不是有效的Date物件,或開始日期晚於結束日期。
範例:
const 工具 = new 日期工具(); const date = new Date(2023, 10, 15); // 2023年11月15日 const start = new Date(2023, 10, 1); // 2023年11月1日 const end = new Date(2023, 10, 30); // 2023年11月30日 console.log(工具.在範圍內(date, start, end)); // true
是否為有效日期字串(dateString)
檢查一個字串是否可以被成功解析為一個有效的日期。
參數:
dateString(string): 要檢查的日期字串。
返回:
boolean- 如果字串是有效的日期格式,返回true,否則返回false。範例:
const 工具 = new 日期工具(); console.log(工具.是否為有效日期字串('2023-11-15')); // true console.log(工具.是否為有效日期字串('invalid-date')); // false console.log(工具.是否為有效日期字串(12345)); // false
取得中文星期名稱(date, isShort)
取得指定日期的中文星期名稱。
參數:
date(Date): 要取得星期名稱的日期物件。isShort(boolean, 可選): 是否返回簡短格式,預設為false。
返回:
string- 中文星期名稱。拋出錯誤:
Error: 當date參數不是有效的Date物件時。
範例:
const 工具 = new 日期工具(); const date = new Date('2023-11-01'); // 星期三 console.log(工具.取得中文星期名稱(date)); // "星期三" console.log(工具.取得中文星期名稱(date, true)); // "三"
取得年份尾數(date)
取得指定日期物件年份的最後兩位數。
參數:
date(Date): 要提取年份資訊的Date物件。
返回:
string- 年份的最後兩位數字串。拋出錯誤:
Error: 如果參數不是有效的Date物件。
範例:
const 工具 = new 日期工具(); const date = new Date('2023-11-15'); console.log(工具.取得年份尾數(date)); // '23'
提取(date)
從給定的日期物件中提取各個時間組件。
參數:
date(Date): 要提取組件的Date物件。
返回:
Object- 包含年、月、日、時、分、秒、毫秒的物件。拋出錯誤:
Error: 如果date不是有效的Date物件。
範例:
const 工具 = new 日期工具(); const date = new Date('2023-11-15T14:30:59.123Z'); const components = 工具.提取(date); console.log(components); /* { year: 2023, month: 10, // 月份從 0 開始 day: 15, hour: 14, minute: 30, second: 59, millisecond: 123 } */
建構(parts)
根據提供的日期時間組件,建構一個新的 Date 物件。
參數:
parts(Object): 包含日期時間組件的物件 (year,month,day,hour,minute,second,millisecond)。
返回:
Date- 根據組件建構的Date物件。拋出錯誤:
Error: 如果parts中缺少必要的屬性或屬性值無效。
範例:
const 工具 = new 日期工具(); const parts = { year: 2023, month: 10, // 十一月 (0 為一月) day: 15, hour: 14, minute: 30, second: 59, millisecond: 123 }; const date = 工具.建構(parts); console.log(date); // 2023-11-15T14:30:59.123Z
檢查單位(單位)
內部使用方法,用於驗證給定的時間單位是否有效。
參數:
單位(string): 要驗證的時間單位。
拋出錯誤:
Error: 如果單位不在預定義的Units集合中。
範例:
const 工具 = new 日期工具(); try { 工具.檢查單位('day'); // 不會拋出錯誤 工具.檢查單位('hours'); // 會拋出錯誤 } catch (error) { console.error(error.message); // "不支援的單位" }